package com.ray.mapper;

import com.ray.bean.*;
import com.ray.pojo.DormEWTotalPojo;
import com.ray.service.model.dorm.DormStatisticsOut;
import com.ray.service.model.dorm.PersonOfDormStatisticsOut;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 宿舍管理Mapper
 * <p>Title: DormManageMapper</p>
 * <p>Description: </p>
 *
 * @author 李斌
 * @date 2018年4月26日
 */
public interface DormManageMapper {
    /**
     * 新增宿舍信息
     *
     * @return int
     * @throws
     * @date 2018年4月26日 下午3:50:26
     * @author 李斌
     */
    int addDormManage(DormManageBean dormMangeBean);

    /**
     * 新增宿舍电表和电表
     *
     * @return int
     * @throws
     * @date 2018年4月26日 下午3:59:58
     * @author 李斌
     */
    int addDormManageToEnergyAndWater(DormManageToEnergyBean dormManageToEnergyAndWaterBean);


    /**
     * 新增宿舍人员对于表
     *
     * @return int
     * @throws
     * @date 2018年4月26日 下午4:00:39
     * @author 李斌
     */
    int addDormManageToUser(Map<String, Object> map);

    /**
     * 根据条件查询宿舍表
     *
     * @return List<DormManageBean>
     * @throws
     * @date 2018年4月26日 下午4:15:28
     * @author 李斌
     */
    List<DormManageBean> getDormManageByDetail(Map<String, Object> map);

    /**
     * 获取水表信息和电表信息
     *
     * @return List<EnergyBean>
     * @throws
     * @date 2018年4月26日 下午6:17:08
     * @author 李斌
     */
    List<EnergyBean> getEnergyAndWaterByDetail(Map<String, Object> map);

    /**
     * 查询宿舍中所有用户
     *
     * @return void
     * @throws
     * @date 2018年4月28日 下午5:28:46
     * @author 李斌
     */
    List<String> getDormManageToUserByDormId(Map<String, Object> map);


    /**
     * 获取所有人员的Id和name
     *
     * @return List<UserBean>
     * @throws
     * @date 2018年4月27日 上午9:03:07
     * @author 李斌
     */
    List<UserBean> getAllUserOnIdAndName(Map<String, Object> map);

    /**
     * 获取宿舍占用的人员
     *
     * @return List<String>
     * @throws
     * @date 2018年4月30日 下午3:30:10
     * @author 李斌
     */
    List<String> getAllUserOnIdAndNameToDorm(Map<String, Object> map);

    /**
     * @return int
     * @throws
     * @date 2018年4月26日 下午7:37:57
     * @author 李斌
     */
    void updateDormManageToEnergy(DormManageToEnergyBean dormManageToEnergyBean);

    /**
     * 修改宿舍编号
     *
     * @return void
     * @throws
     * @date 2018年4月28日 下午4:02:25
     * @author 李斌
     */
    void updateDormManageDetail(DormManageBean dormManage);

    /**
     * 查询宿舍编号
     *
     * @return DormManageBean
     * @throws
     * @date 2018年4月27日 上午9:33:02
     * @author 李斌
     */
    List<DormManageBean> getDormByDormNo(Map<String, Object> map);

    /**
     * 根据宿舍id获取宿舍No
     *
     * @return String
     * @throws
     * @date 2018年5月1日 下午3:34:54
     * @author 李斌
     */
    String getDormNoById(Map<String, Object> map);

    /**
     * 分页查询宿舍信息
     *
     * @return List<DormManageBean>
     * @throws
     * @date 2018年4月28日 下午2:17:42
     * @author 李斌
     */
    List<DormManageBean> getDormMangeByPage(Map<String, Object> map);

    /**
     * 获取宿舍数据总条数
     *
     * @return int
     * @throws
     * @date 2018年4月30日 上午10:15:20
     * @author 李斌
     */
    int getDormMangeByPageCount(Map<String, Object> map);

    /**
     * 删除宿舍人员对于表信息
     *
     * @return void
     * @throws
     * @date 2018年4月28日 下午4:34:42
     * @author 李斌
     */
    void deleteDormManageToUser(String dormId);

    /**
     * 删除宿舍水电
     *
     * @return void
     * @throws
     * @date 2018年4月30日 下午4:22:49
     * @author 李斌
     */
    void deleteDormWaterAndEnergyByDormId(Map<String, Object> map);

    /**
     * 获取宿舍用电用水汇总
     *
     * @return List<DormEWTotalPojo>
     * @throws
     * @date 2018年4月29日 下午4:38:22
     * @author 李斌
     */
    List<DormEWTotalPojo> getDormEWTotalData(Map<String, Object> map);

    /**
     * 查询某个宿舍中是否有某些人员
     *
     * @return List<String>
     * @throws
     * @date 2018年4月30日 上午11:12:35
     * @author 李斌
     */
    List<DormManageToUserBean> getUserOnNotInDorm(@Param("ids") List<String> ids);

    /**
     * 查询宿舍是否有电表
     *
     * @return String
     * @throws
     * @date 2018年4月30日 下午1:47:39
     * @author 李斌
     */
    DormManageToEnergyBean getEnergyAndWaterByDormId(String dormId);

    /**
     * 禁用宿舍
     *
     * @return void
     * @throws
     * @date 2018年4月30日 下午2:37:22
     * @author 李斌
     */
    void setDormToDisable(Map<String, Object> map);


    /**
     * 修改宿舍人员历史记录表
     *
     * @return int
     * @throws
     * @date 2018年4月27日 上午9:18:14
     * @author 李斌
     */
    int updateDormMangeToUserRecords(Map<String, Object> paramMap);

    /**
     * 新增宿舍人员历史记录表
     *
     * @return int
     * @throws
     * @date 2018年5月2日 上午9:46:51
     * @author 李斌
     */
    int addDormManageToUserRecords(Map<String, Object> paramMap);

    /**
     * 新增宿舍水电对应明细记录表
     *
     * @return void
     * @throws
     * @date 2018年5月2日 下午1:46:58
     * @author 李斌
     */
    void addDormMangeToEnergyRecords(Map<String, Object> map);

    /**
     * 获取目前宿舍的水电度数
     *
     * @return DormManageToEnergyRecordsBean
     * @throws
     * @date 2018年5月2日 下午2:26:09
     * @author 李斌
     */
    DormManageToEnergyRecordsBean getDormManageToEnergyDegee(String id);

    /**
     * 新增宿舍水电明细记录信息
     *
     * @return void
     * @throws
     * @date 2018年5月2日 下午2:45:05
     * @author 李斌
     */
    void addDormManageToEnergyAndWaterRecords(DormManageToEnergyRecordsBean dterb);

    /**
     * 更新宿舍水电明细记录信息
     *
     * @return void
     * @throws
     * @date 2018年5月2日 下午2:45:05
     * @author 李斌
     */
    void updateDormManageToEnergyAndWaterRecords(DormManageToEnergyRecordsBean dterb);

    /**
     * 删除宿舍水电对应明细记录表
     *
     * @return void
     * @throws
     * @date 2018年5月2日 下午3:09:00
     * @author 李斌
     */
    void deleteDormWaterAndEnergyRecordsByDormId(Map<String, Object> map);

    /**
     * 删除宿舍人员对应表明细记录表
     *
     * @return void
     * @throws
     * @date 2018年5月2日 下午3:12:10
     * @author 李斌
     */
    void deleteDormManageToUserRecordsByDormId(String dormId);

    /**
     * 获取宿舍使用过的水电表号
     *
     * @return List<String>
     * @throws
     * @date 2018年5月2日 下午4:11:48
     * @author 李斌
     */
    List<String> getDormToEnergyRecordsOnEWId(Map<String, Object> map);

    /**
     * 获取水电总费用
     *
     * @return List<PeoplesFeeForDormPojo>
     * @throws
     * @date 2018年5月1日 下午4:28:26
     * @author 李斌
     */
    List<DormEWTotalPojo> getPeoplesFeeForDorm(Map<String, Object> map);

    /**
     * 获取宿舍人员记录明细表
     *
     * @return List<DormManageToEnergyRecordsBean>
     * @throws
     * @date 2018年5月3日 上午8:19:52
     * @author 李斌
     */
    List<DormManageToUserRecordsBean> getDormManageToUserRecords(Map<String, Object> map);

    /**
     * 获取在宿舍入住的用户使用的电表水表数据
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param company 查询公司
     * @return : List<PersonOfDormStatisticsOut>
     */
    List<PersonOfDormStatisticsOut> getPersonOfDormStatistics(@Param("startTime") String startTime,
                                                              @Param("endTime") String endTime,
                                                              @Param("company") String company);

    /**
     * 获取宿舍水电统计分析信息
     *
     * @param startTime 查询开始时间
     * @param endTime 查询结束时间
     * @param company 查询公司
     * @return : List<DormStatisticsOut>
     */
    List<DormStatisticsOut> getDormStatistics(@Param("startTime") String startTime,
                                              @Param("endTime") String endTime,
                                              @Param("company") String company);


}
